package com.gl.glbooks.model
{
	import com.gl.glbooks.model.constants.Constants;
	import com.gl.glbooks.view.AltaLibrosPanel;
	import com.gl.glbooks.vos.Categoria;
	import com.gl.glbooks.vos.Editorial;
	import com.gl.glbooks.vos.Ejemplar;
	import com.gl.glbooks.vos.Libro;
	import com.gl.glbooks.vos.Oficina;
	import com.gl.glbooks.vos.PalabraClave;
	import com.gl.glbooks.vos.SugerenciaPDFsubido;
	
	import mx.collections.ArrayCollection;
	import mx.controls.Alert;

	public class AltaLibrosPanelModel
	{
		[Bindable]
		public var ejemplarSeleccionado:Ejemplar;
		[Bindable]
		public var editoriales:ArrayCollection;
		[Bindable]
		public var categorias:ArrayCollection;
		[Bindable]
		public var oficinas:ArrayCollection;
		
		// Al momento de modificar un libro
		[Bindable]
		public var categoriaSeleccionada:Categoria;
		[Bindable]
		public var editorialSeleccionada:Editorial;
		[Bindable]
		public var palabrasSeleccionadasdelLibroTemporal:ArrayCollection;
		
		//para aceptar un pdf
		[Bindable]
		public var sugerenciaSeleccionadaDigitalSubido:SugerenciaPDFsubido;
	//	[Bindable]
	//	public var libroSeleccionadoAccion:String;//.... get/set...set-> si es alta pdf usuario:currentState: Digital
		
		private var _libroSeleccionadoAccion:String;
		
		[Bindable]
		public function get libroSeleccionadoAccion():String
		{
			return _libroSeleccionadoAccion;
		}
		
		public function set libroSeleccionadoAccion(value:String):void
		{
			_libroSeleccionadoAccion = value;
			
			if(_libroSeleccionadoAccion == Constants.ACCION_ALTA_LIBRO)
				currentState = Constants.ESTADO_LIBRO_FISICO;
			if(_libroSeleccionadoAccion == Constants.ACCION_ACEPTAR_PDF)
				currentState = Constants.ESTADO_LIBRO_ALTALIBRO_DIGITALUSUARIO;
			if(_libroSeleccionadoAccion == Constants.ACCION_MODIFICAR_LIBRO)
				currentState = Constants.ESTADO_LIBRO_MODIFICAR;
		}	
		
			
		[Bindable]
		public var currentState:String;
		
		// lo new nuevo
		private var _libroSeleccionado:Libro;
		
		[Bindable]
		public var panel:AltaLibrosPanel;
		
		public function GestionarLibrosPanelModel()
		{
		}
		
		[Bindable]
		public function get libroSeleccionado():Libro
		{
			return _libroSeleccionado;
		}
		
		public function set libroSeleccionado(value:Libro):void
		{//agregue
			_libroSeleccionado = value;
			
			if( panel ) {
				panel.limpiar()	
			}
			categoriaSeleccionada = null;
			for each( var searchCategoria:Categoria in categorias )
			{
				if( searchCategoria.equals( _libroSeleccionado.categoria ) )
					categoriaSeleccionada = searchCategoria;
			}
			editorialSeleccionada = null;
			for each( var searchEditorial:Editorial in editoriales )
			{
				if( searchEditorial.equals( _libroSeleccionado.editorial ) )
					editorialSeleccionada = searchEditorial;
			}
			palabrasClavesSeleccionadas.removeAll();
			palabrasClavesSeleccionadas.addAll( _libroSeleccionado.palabra);
			
			actualizarPalabrasNoSeleccionadas();
		}
		
		private function actualizarPalabrasNoSeleccionadas():void
		{
			palabrasClavesNoSeleccionadas.removeAll();
			//se eliminan del listado de las noseleccionadas, la que ya se encuentran seleccionadas
			for each( var palabraNoSeleccionada:PalabraClave in palabrasClaves )
			{
				var bPalabraNoSeleccionada:Boolean = true;
				for each( var palabraSeleccionada:PalabraClave in palabrasClavesSeleccionadas )
				{
					if( palabraSeleccionada.id == palabraNoSeleccionada.id )
					{
						bPalabraNoSeleccionada = false;
					}
				}
				if( bPalabraNoSeleccionada )
				{
					palabrasClavesNoSeleccionadas.addItem( palabraNoSeleccionada );
				}	
			}
		}	
		
		[Bindable]
		public var palabrasClavesSeleccionadas:ArrayCollection = new ArrayCollection();
		
		//antes de modif
		[Bindable]
		public var palabrasClavesNoSeleccionadas:ArrayCollection = new ArrayCollection();
		
	/*	[Bindable]
		public var palabrasClavesNoSeleccionadas:ArrayCollection = new ArrayCollection();*/
		
		private var _palabrasClaves:ArrayCollection;
		
		[Bindable]
		public function get palabrasClaves():ArrayCollection
		{
			return _palabrasClaves;
		}
		
		public function set palabrasClaves( value :ArrayCollection ):void
		{
			
			//Antes cuando no estaba modificar
			if( value != _palabrasClaves )
			{
				_palabrasClaves = value;
				actualizarPalabrasNoSeleccionadas();
			}
			
			/*if( value != _palabrasClaves )
			{
				_palabrasClaves = value;
				palabrasClavesNoSeleccionadas.addAll(_libroSeleccionado.palabra );
				palabrasClavesSeleccionadas.addAll( _libroSeleccionado.palabra);
			}*/
		}
		
		
		
		
		
	}
}